<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      // 参数是函数或者返回值是函数   - 高阶函数
      // 将myfilter遍历方法挂载在原型对象上  
      /* cb 回调函数
      (item,index,arr)=>{
        console.log(item,index,arr)
      }
      */
    Array.prototype.myFilter = function(cb) {
      const res = []  //声明一个空数组
      for(let i = 0;i < this.length;i++){
        // console.log(this);//数组
        // 将数组中的每一项的值 下标 以及数组 赋值给flag
        let flag = cb(this[i],i,this)
        console.log(flag)
        // 判断flag中的数据是否为true 为true就加入到新的数组中
        if(flag){
          res.push(this[i])
        }
        
      }
      return res  //返回新的数组
    }

    const arr = [1,2,6,10,11]

    const arr1 = arr.myFilter((item,index,arr)=>{

      return item>=5
    })
    console.log(arr1)
    </script>
  </body>
</html>